home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CUCD / Programming / OUI / slider.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  2.1 KB  |  75 lines

  1. // $Id: slider.cc 1.2 1997/07/14 04:23:37 dlorre Exp dlorre $
  2.  
  3. #include <libraries/gadtools.h>
  4. #include <intuition/gadgetclass.h>
  5. #include "gadgets/slider.h"
  6. #include "gadgetlist.h"
  7. #include <proto/gadtools.h>
  8.  
  9. // ========================================================================
  10. // ==========================  SLIDER CLASS ===============================
  11. // ========================================================================
  12.  
  13.  
  14. slider::slider(gadgetlist *gl,
  15.                void (window::*func)(gadget *, unsigned long, unsigned short),
  16.                long min, long max, long level,
  17.                long freedom,
  18.                const char *text,
  19.                const char *lformat,
  20.                unsigned short mlen,
  21.                long tplace,
  22.                long lplace,
  23.                long (*fdisp)(Gadget *, unsigned short)) : gadget(gl, func)
  24. {
  25.    gl->ng->ng_GadgetText = (UBYTE *)text ;
  26.    underkey(text) ;
  27.    gl->ng->ng_Flags = tplace ;
  28.    vmin = min ;
  29.    vmax = max ;
  30.    gad = gl->gad = CreateGadget(SLIDER_KIND, gl->gad, gl->ng,
  31.             GTSL_Min,           min,
  32.             GTSL_Max,           max,
  33.             GTSL_Level,         level,
  34.             GTSL_LevelFormat,   lformat,
  35.             GTSL_MaxLevelLen,   mlen,
  36.             GTSL_LevelPlace,    lplace,
  37.             GTSL_DispFunc,      fdisp,
  38.             PGA_Freedom,        freedom,
  39.             GT_Underscore,  '_',
  40.             TAG_END) ;
  41. }
  42.  
  43. void slider::set(long level, long min, long max)
  44. {
  45.     vmin = min ;
  46.     vmax = max ;
  47.     GT_SetGadgetAttrs(gad, w, NULL,
  48.         (min != -1)?GTSL_Min:TAG_IGNORE, min,
  49.         (max != -1)?GTSL_Max:TAG_IGNORE, max,
  50.         (level != -1)?GTSL_Level:TAG_IGNORE, level,
  51.         TAG_DONE) ;
  52.  
  53. }
  54.  
  55. void slider::action(unsigned long classe, unsigned short code)
  56. {
  57.     cursel = code ;
  58.     gadget::action(classe, code) ;
  59. }
  60.  
  61. void slider::keystroke(BOOL shifted)
  62. {
  63.     if (shifted) {
  64.         if (cursel > vmin)
  65.             cursel-- ;
  66.     }
  67.     else {
  68.         if (cursel < vmax)
  69.             cursel++ ;
  70.     }
  71.     gadget::action(NULL, cursel) ;
  72.     GT_SetGadgetAttrs(gad, w, NULL, GTSL_Level, cursel, TAG_DONE) ;
  73. }
  74.  
  75.